/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package projovem.relatorios.sintesesupervisao;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import javax.persistence.EntityManagerFactory;
import projovem.dao.NucleoDAO;
import projovem.relatorios.sintesesupervisao.vo.Rotina002SinteseSupervisaoVo;
import projovem.rotinas.R002.Rotina002;

/**
 *
 * @author admprojovem
 */
public class SinteseSupervisaoRotina002 implements Serializable {

    private NucleoDAO nucleoDao = new NucleoDAO();
    private Rotina002SinteseSupervisaoVo contagem = new Rotina002SinteseSupervisaoVo();

    public Rotina002SinteseSupervisaoVo gerarRelatorio(String coordenacaoEscolhida, String entradaEscolhida, EntityManagerFactory emf) {

        List<Rotina002> listaRotina002 = nucleoDao.obtemNucleosByCoordenacaoAndEntradaAndRotina002(coordenacaoEscolhida, entradaEscolhida, emf);
        contagem.setListaRotina002(listaRotina002);

        Integer totalDeEducadoresPresentes = 0;
        Integer horaInicialFormacao = 0;
        Integer horaFinalFormacao = 0;

        for (Rotina002 rotina : listaRotina002) {

            if (rotina.getNumeroEducadoresPresentes() != null && !rotina.getNumeroEducadoresPresentes().isEmpty() && Integer.parseInt(rotina.getNumeroEducadoresPresentes()) >= 0) {
                totalDeEducadoresPresentes += Integer.parseInt(rotina.getNumeroEducadoresPresentes());
            }

            if (rotina.getNumeroEducadoresInscritos() != null && !rotina.getNumeroEducadoresInscritos().isEmpty() && Integer.parseInt(rotina.getNumeroEducadoresInscritos()) >= 0 && rotina.getNumeroEducadoresPresentes() != null && !rotina.getNumeroEducadoresPresentes().isEmpty() && Integer.parseInt(rotina.getNumeroEducadoresPresentes()) >= 0) {
                if (Integer.parseInt(rotina.getNumeroEducadoresInscritos()) == Integer.parseInt(rotina.getNumeroEducadoresPresentes())) {
                    contagem.setQNumeroEducadoresIgual(contagem.getQNumeroEducadoresIgual() + 1);
                    contagem.setPositivo(contagem.getPositivo() + 1);
                }
                if (Integer.parseInt(rotina.getNumeroEducadoresInscritos()) != Integer.parseInt(rotina.getNumeroEducadoresPresentes())) {
                    contagem.setQNumeroEducadoresDiferente(contagem.getQNumeroEducadoresDiferente() + 1);
                }
            }

            if (rotina.getNumeroFormadoresInscritos() != null && !rotina.getNumeroFormadoresInscritos().isEmpty() && Integer.parseInt(rotina.getNumeroFormadoresInscritos()) >= 0 && rotina.getNumeroFormadoresPresentes() != null && !rotina.getNumeroFormadoresPresentes().isEmpty() && Integer.parseInt(rotina.getNumeroFormadoresPresentes()) >= 0) {
                if (Integer.parseInt(rotina.getNumeroFormadoresInscritos()) == Integer.parseInt(rotina.getNumeroFormadoresPresentes())) {
                    contagem.setQNumeroFormadoresIgual(contagem.getQNumeroFormadoresIgual() + 1);
                }
                if (Integer.parseInt(rotina.getNumeroFormadoresInscritos()) != Integer.parseInt(rotina.getNumeroFormadoresPresentes())) {
                    contagem.setQNumeroFormadoresDiferente(contagem.getQNumeroFormadoresDiferente() + 1);
                    contagem.setNegativo(contagem.getNegativo() + 1);
                }
            }

            horaInicialFormacao = 0;
            horaFinalFormacao = 0;
            if (rotina.getHoraInicioFormacao() != null && !rotina.getHoraInicioFormacao().isEmpty()) {
                if (rotina.getHoraInicioFormacao().substring(1, 1).equals(":")) {
                    horaInicialFormacao = Integer.parseInt(rotina.getHoraInicioFormacao().substring(0, 1));
                } else {
                    horaInicialFormacao = Integer.parseInt(rotina.getHoraInicioFormacao().substring(0, 2));
                }
            }

            if (rotina.getHoraTerminoFormacao() != null && !rotina.getHoraTerminoFormacao().isEmpty()) {
                if (rotina.getHoraTerminoFormacao().substring(1, 1).equals(":")) {
                    horaFinalFormacao = Integer.parseInt(rotina.getHoraTerminoFormacao().substring(0, 1));
                } else {
                    horaFinalFormacao = Integer.parseInt(rotina.getHoraTerminoFormacao().substring(0, 2));
                }
            }

            if (horaFinalFormacao - horaInicialFormacao > 4) {
                contagem.setQ9Superior(contagem.getQ9Superior() + 1);
                contagem.setPositivo(contagem.getPositivo() + 1);
            }
            if (horaFinalFormacao - horaInicialFormacao == 4) {
                contagem.setQ9Igual(contagem.getQ9Igual() + 1);
            }
            if (horaFinalFormacao - horaInicialFormacao < 4 && horaFinalFormacao - horaInicialFormacao >= 3) {
                contagem.setQ9Entre(contagem.getQ9Entre() + 1);
                contagem.setNegativo(contagem.getNegativo() + 1);
            }
            if (horaFinalFormacao - horaInicialFormacao < 3) {
                contagem.setQ9Inferior(contagem.getQ9Inferior() + 1);
                contagem.setNegativo(contagem.getNegativo() + 1);
            }

            if (rotina.getQ10() != null && rotina.getQ10().equals("Sim")) {
                contagem.setQ10a(contagem.getQ10a() + 1);
            }
            if (rotina.getQ10() != null && rotina.getQ10().equals("Nao")) {
                contagem.setQ10b(contagem.getQ10b() + 1);
                contagem.setNegativo(contagem.getNegativo() + 1);
            }

            if (rotina.getQ11() != null && rotina.getQ11().equals("Sim")) {
                contagem.setQ11a(contagem.getQ11a() + 1);
            }
            if (rotina.getQ11() != null && rotina.getQ11().equals("Nao")) {
                contagem.setQ11b(contagem.getQ11b() + 1);
                contagem.setNegativo(contagem.getNegativo() + 1);
            }

            if (rotina.getQ12() != null && rotina.getQ12().equals("Sim")) {
                contagem.setQ12a(contagem.getQ12a() + 1);
            }
            if (rotina.getQ12() != null && rotina.getQ12().equals("Nao")) {
                contagem.setQ12b(contagem.getQ12b() + 1);
                contagem.setNegativo(contagem.getNegativo() + 1);
            }

            if (rotina.getQ18QuantidadeEnsinoFundamental() != null && !rotina.getQ18QuantidadeEnsinoFundamental().isEmpty() && Integer.parseInt(rotina.getQ18QuantidadeEnsinoFundamental()) > 0) {
                contagem.setQ18Fundamental(contagem.getQ18Fundamental() + Integer.parseInt(rotina.getQ18QuantidadeEnsinoFundamental()));
                contagem.setNegativo(contagem.getNegativo() + 1);
            }
            if (rotina.getQ18QuantidadeEnsinoMedioTecnico() != null && !rotina.getQ18QuantidadeEnsinoMedioTecnico().isEmpty() && Integer.parseInt(rotina.getQ18QuantidadeEnsinoMedioTecnico()) > 0) {
                contagem.setQ18MedioTecnico(contagem.getQ18MedioTecnico() + Integer.parseInt(rotina.getQ18QuantidadeEnsinoMedioTecnico()));
                contagem.setNegativo(contagem.getNegativo() + 1);
            }
            if (rotina.getQ18QuantidadeEnsinoMedioMagisterio() != null && !rotina.getQ18QuantidadeEnsinoMedioMagisterio().isEmpty() && Integer.parseInt(rotina.getQ18QuantidadeEnsinoMedioMagisterio()) > 0) {
                contagem.setQ18MedioMagisterio(contagem.getQ18MedioMagisterio() + Integer.parseInt(rotina.getQ18QuantidadeEnsinoMedioMagisterio()));
                contagem.setNegativo(contagem.getNegativo() + 1);
            }
            if (rotina.getQ18QuantidadeEnsinoSuperiorIncompleto() != null && !rotina.getQ18QuantidadeEnsinoSuperiorIncompleto().isEmpty() && Integer.parseInt(rotina.getQ18QuantidadeEnsinoSuperiorIncompleto()) > 0) {
                contagem.setQ18SuperiorIncompleto(contagem.getQ18SuperiorIncompleto() + Integer.parseInt(rotina.getQ18QuantidadeEnsinoSuperiorIncompleto()));
            }
            if (rotina.getQ18QuantidadeEnsinoSuperiorCompletoTecnologico() != null && !rotina.getQ18QuantidadeEnsinoSuperiorCompletoTecnologico().isEmpty() && Integer.parseInt(rotina.getQ18QuantidadeEnsinoSuperiorCompletoTecnologico()) > 0) {
                contagem.setQ18SuperiorCompletoTecnologico(contagem.getQ18SuperiorCompletoTecnologico() + Integer.parseInt(rotina.getQ18QuantidadeEnsinoSuperiorCompletoTecnologico()));
            }
            if (rotina.getQ18QuantidadeEnsinoSuperiorCompletoLicenciatura() != null && !rotina.getQ18QuantidadeEnsinoSuperiorCompletoLicenciatura().isEmpty() && Integer.parseInt(rotina.getQ18QuantidadeEnsinoSuperiorCompletoLicenciatura()) > 0) {
                contagem.setQ18SuperiorCompletoLicenciatura(contagem.getQ18SuperiorCompletoLicenciatura() + Integer.parseInt(rotina.getQ18QuantidadeEnsinoSuperiorCompletoLicenciatura()));
            }
            if (rotina.getQ18QuantidadeEnsinoSuperiorCompletoBacharelado() != null && !rotina.getQ18QuantidadeEnsinoSuperiorCompletoBacharelado().isEmpty() && Integer.parseInt(rotina.getQ18QuantidadeEnsinoSuperiorCompletoBacharelado()) > 0) {
                contagem.setQ18SuperiorCompletoBacharelado(contagem.getQ18SuperiorCompletoBacharelado() + Integer.parseInt(rotina.getQ18QuantidadeEnsinoSuperiorCompletoBacharelado()));
            }
            if (rotina.getQ18QuantidadeEspecializacao() != null && !rotina.getQ18QuantidadeEspecializacao().isEmpty() && Integer.parseInt(rotina.getQ18QuantidadeEspecializacao()) > 0) {
                contagem.setQ18Especializacao(contagem.getQ18Especializacao() + Integer.parseInt(rotina.getQ18QuantidadeEspecializacao()));
            }
            if (rotina.getQ18QuantidadeMestrado() != null && !rotina.getQ18QuantidadeMestrado().isEmpty() && Integer.parseInt(rotina.getQ18QuantidadeMestrado()) > 0) {
                contagem.setQ18Mestrado(contagem.getQ18Mestrado() + Integer.parseInt(rotina.getQ18QuantidadeMestrado()));
                contagem.setPositivo(contagem.getPositivo() + 1);
            }
            if (rotina.getQ18QuantidadeDoutorado() != null && !rotina.getQ18QuantidadeDoutorado().isEmpty() && Integer.parseInt(rotina.getQ18QuantidadeDoutorado()) > 0) {
                contagem.setQ18Doutorado(contagem.getQ18Doutorado() + Integer.parseInt(rotina.getQ18QuantidadeDoutorado()));
                contagem.setPositivo(contagem.getPositivo() + 1);
            }

            if (rotina.getQ19QuantidadeSuperior() != null && !rotina.getQ19QuantidadeSuperior().isEmpty() && Integer.parseInt(rotina.getQ19QuantidadeSuperior()) > 0) {
                contagem.setQ19Superior(contagem.getQ19Superior() + Integer.parseInt(rotina.getQ19QuantidadeSuperior()));
                contagem.setNegativo(contagem.getNegativo() + 1);
            }
            if (rotina.getQ19QuantidadeTecnologo() != null && !rotina.getQ19QuantidadeTecnologo().isEmpty() && Integer.parseInt(rotina.getQ19QuantidadeTecnologo()) > 0) {
                contagem.setQ19Tecnologo(contagem.getQ19Tecnologo() + Integer.parseInt(rotina.getQ19QuantidadeTecnologo()));
            }
            if (rotina.getQ19QuantidadeEducacao() != null && !rotina.getQ19QuantidadeEducacao().isEmpty() && Integer.parseInt(rotina.getQ19QuantidadeEducacao()) > 0) {
                contagem.setQ19Educacao(contagem.getQ19Educacao() + Integer.parseInt(rotina.getQ19QuantidadeEducacao()));
            }
            if (rotina.getQ19QuantidadeLetras() != null && !rotina.getQ19QuantidadeLetras().isEmpty() && Integer.parseInt(rotina.getQ19QuantidadeLetras()) > 0) {
                contagem.setQ19Letras(contagem.getQ19Letras() + Integer.parseInt(rotina.getQ19QuantidadeLetras()));
            }
            if (rotina.getQ19QuantidadeHumanas() != null && !rotina.getQ19QuantidadeHumanas().isEmpty() && Integer.parseInt(rotina.getQ19QuantidadeHumanas()) > 0) {
                contagem.setQ19Humanas(contagem.getQ19Humanas() + Integer.parseInt(rotina.getQ19QuantidadeHumanas()));
            }
            if (rotina.getQ19QuantidadeExatas() != null && !rotina.getQ19QuantidadeExatas().isEmpty() && Integer.parseInt(rotina.getQ19QuantidadeExatas()) > 0) {
                contagem.setQ19Exatas(contagem.getQ19Exatas() + Integer.parseInt(rotina.getQ19QuantidadeExatas()));
            }
            if (rotina.getQ19QuantidadeBiologicas() != null && !rotina.getQ19QuantidadeBiologicas().isEmpty() && Integer.parseInt(rotina.getQ19QuantidadeBiologicas()) > 0) {
                contagem.setQ19Biologicas(contagem.getQ19Biologicas() + Integer.parseInt(rotina.getQ19QuantidadeBiologicas()));
            }
        }

        if (contagem.getQ18Fundamental() != null && contagem.getQ18Fundamental() != 0) {
            contagem.setQ18Fundamental((contagem.getQ18Fundamental() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ18MedioTecnico() != null && contagem.getQ18MedioTecnico() != 0) {
            contagem.setQ18MedioTecnico((contagem.getQ18MedioTecnico() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ18MedioMagisterio() != null && contagem.getQ18MedioMagisterio() != 0) {
            contagem.setQ18MedioMagisterio((contagem.getQ18MedioMagisterio() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ18SuperiorIncompleto() != null && contagem.getQ18SuperiorIncompleto() != 0) {
            contagem.setQ18SuperiorIncompleto((contagem.getQ18SuperiorIncompleto() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ18SuperiorCompletoTecnologico() != null && contagem.getQ18SuperiorCompletoTecnologico() != 0) {
            contagem.setQ18SuperiorCompletoTecnologico((contagem.getQ18SuperiorCompletoTecnologico() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ18SuperiorCompletoLicenciatura() != null && contagem.getQ18SuperiorCompletoLicenciatura() != 0) {
            contagem.setQ18SuperiorCompletoLicenciatura((contagem.getQ18SuperiorCompletoLicenciatura() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ18SuperiorCompletoBacharelado() != null && contagem.getQ18SuperiorCompletoBacharelado() != 0) {
            contagem.setQ18SuperiorCompletoBacharelado((contagem.getQ18SuperiorCompletoBacharelado() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ18Especializacao() != null && contagem.getQ18Especializacao() != 0) {
            contagem.setQ18Especializacao((contagem.getQ18Especializacao() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ18Mestrado() != null && contagem.getQ18Mestrado() != 0) {
            contagem.setQ18Mestrado((contagem.getQ18Mestrado() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ18Doutorado() != null && contagem.getQ18Doutorado() != 0) {
            contagem.setQ18Doutorado((contagem.getQ18Doutorado() * 100) / totalDeEducadoresPresentes);
        }

        if (contagem.getQ19Superior() != null && contagem.getQ19Superior() != 0) {
            contagem.setQ19Superior((contagem.getQ19Superior() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ19Tecnologo() != null && contagem.getQ19Tecnologo() != 0) {
            contagem.setQ19Tecnologo((contagem.getQ19Tecnologo() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ19Educacao() != null && contagem.getQ19Educacao() != 0) {
            contagem.setQ19Educacao((contagem.getQ19Educacao() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ19Letras() != null && contagem.getQ19Letras() != 0) {
            contagem.setQ19Letras((contagem.getQ19Letras() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ19Humanas() != null && contagem.getQ19Humanas() != 0) {
            contagem.setQ19Humanas((contagem.getQ19Humanas() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ19Exatas() != null && contagem.getQ19Exatas() != 0) {
            contagem.setQ19Exatas((contagem.getQ19Exatas() * 100) / totalDeEducadoresPresentes);
        }
        if (contagem.getQ19Biologicas() != null && contagem.getQ19Biologicas() != 0) {
            contagem.setQ19Biologicas((contagem.getQ19Biologicas() * 100) / totalDeEducadoresPresentes);
        }
        Locale locale = new Locale("pt", "BR");
        GregorianCalendar calendar = new GregorianCalendar();
        SimpleDateFormat formatador = new SimpleDateFormat("dd' de 'MMMMM' de 'yyyy' - 'HH':'mm'h'", locale);
        contagem.setDataatual(formatador.format(calendar.getTime()));
        System.out.println(formatador.format(calendar.getTime()));
        return contagem;
    }
}
